package com.king.gkrpc.client;

import com.king.gkrpc.Peer;
import com.king.gkrpc.transport.TransportClient;

import java.util.List;

/**
 * 选择哪个server连接
 */
public interface TransportSelector {
    /**
     * 初始化selector
     * @param peers  可以连接的server 端点
     * @param count  client与server建立多少个连接
     * @param clazz  TransportClient
     */
    void init(List<Peer> peers,int count,Class<? extends TransportClient> clazz);

    /**
     * 选择一个transport 与server 交互
     * @return
     */
    TransportClient select();

    /**
     * 释放client
     * @param client
     */
    void release(TransportClient client);

    void close();
}
